#include "BufferCircularCamiones.h"

void inicializarBuffer(BufferCircularCamiones *buffer) {
	buffer->start = 0;
	buffer->end = 0;
	buffer->cantidadCamionesBloqueados = 0;
	for (int i = 0; i < CANT_TRUCKS; i++) {
		buffer->buffer[i] = false;
	}
}

int getCantidadCamionesBloqueados(BufferCircularCamiones *buffer) {
	return buffer->cantidadCamionesBloqueados;
}

void agregarCamion(BufferCircularCamiones *buffer, int nroCamion) {
	buffer->buffer[buffer->start] = nroCamion;
	buffer->start = (buffer->start + 1) % CANT_TRUCKS;
	(buffer->cantidadCamionesBloqueados)++;
}

int obtenerUltimoCamionBloqueado(BufferCircularCamiones *buffer) {
	int pos = buffer->end;
	buffer->end = (buffer->end + 1) % CANT_TRUCKS;
	(buffer->cantidadCamionesBloqueados)--;
	return buffer->buffer[pos];
}

void copiarBuffer(BufferCircularCamiones *copy, const BufferCircularCamiones *original) {
	copy->start = original->start;
	copy->end = original->end;
	copy->cantidadCamionesBloqueados = original->cantidadCamionesBloqueados;
	
	for (int i = 0; i < CANT_TRUCKS; i++) {
		copy->buffer[i] = original->buffer[i];
	}
}
